#ifndef GUI_H
#define GUI_H

#define GUI_BACKGROUND      1
#define GUI_BUTTON          2
#define GUI_CHECKBOX        3
#define GUI_LABEL           4
#define GUI_INPUT           5

typedef struct
{
    float x;
    float y;
    float width;
    float height;
}rct;

class GUI
{
    public:
        GUI(int x, int y, int width, int height,int gui_type);
        GUI(int x, int y, int width, int height, char *string,int gui_type);
        GUI(int x, int y, bool checked,int gui_type);

        virtual ~GUI();

        void draw();
        void Hide();
        void Show();

        bool Visible();
        bool MouseOver();
        bool Clicked();

    protected:

    private:
        rct     position;
        bool    visible;
        bool    checked;
        bool    clicked_once;

        char    *str;
        int     GUI_TYPE;
};

class GUI_LIST
{
    public:
        GUI_LIST();
        GUI_LIST(GUI *Self);

        void Append(GUI *Child);
        void Update();
        void Hide();
        void Show();

    private:
        GUI_LIST *Parrent;
        GUI_LIST *Child;

        GUI *Self;
};

#endif // GUI_H
